package com.hwadee.controller;

import com.hwadee.mapper.AdminMapper;
import com.hwadee.pojo.Admin;
import com.hwadee.service.AdminService;
import org.apache.ibatis.annotations.Result;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.DigestUtils;
import org.springframework.web.bind.annotation.*;

import java.util.Map;

@CrossOrigin(origins = "*")
@RestController
@RequestMapping("/api/admin")
public class AdminController {

    @Autowired
    private AdminMapper adminMapper;
    @Autowired
    private AdminService adminService;

    // 通过 ID 获取管理员信息
    @GetMapping("/{id}")
    public Admin getAdmin(@PathVariable Integer id) {
        return adminMapper.getById(id);// 调用 mapper 获取数据
    }

    // 修改管理员的手机号
    @PostMapping("/updatePhone")
    public String updatePhone(@RequestBody Map<String, Object> body) {
        // 从请求体中提取 id 和 phone 参数
        Integer id = Integer.parseInt(body.get("id").toString());
        String phone = (String) body.get("phone");
        // 调用 mapper 更新手机号
        int result = adminMapper.updatePhone(id, phone);
        return result > 0 ? "success" : "fail";
    }

    // 修改管理员的密码
    @PostMapping("/updatePassword")
    public String updatePassword(@RequestBody Map<String, Object> body) {
        // 从请求体中提取 id 和 password 参数
        Integer id = Integer.parseInt(body.get("id").toString());
        String password = (String) body.get("password");
        // 调用 mapper 更新密码
        int result = adminMapper.updatePassword(id, password);
        return result > 0 ? "success" : "fail";
    }

    // 管理员登录接口，支持用户名或手机号登录
    @PostMapping("/login")
    public Object login(@RequestBody Map<String, String> body) {
        String loginInput = body.get("username");  // 接收账号或手机号
        String password = body.get("password");
        // 优先通过手机号查找管理员
        Admin admin = adminMapper.getByPhone(loginInput);
        if (admin == null) {// 如果手机号找不到，则尝试通过用户名查找
            admin = adminMapper.getByUsername(loginInput);
        }
        // 调试信息
        System.out.println("查到的用户对象: " + admin);
        System.out.println("输入的密码是：" + password);
        // 若未找到用户，返回用户未找到状态
        if (admin == null) {
            return Map.of("status", "user_not_found");
        }
        // 如果密码不匹配，返回密码错误状态
        if (!password.equals(admin.getPassword())) {
            return Map.of("status", "wrong_password");
        }
        // 登录成功，返回用户基本信息
        return Map.of(
                "status", "success",
                "id", admin.getId(),
                "username", admin.getUsername(),
                "phone", admin.getPhone()
        );
    }

    // 管理员注册接口
    @PostMapping("/register")
    public String registerAdmin(@RequestBody Admin admin) {
        adminService.register(admin);
        return "success";
    }


}
